export const math = {
    add(arg1,arg2) {
        var r1, r2, m;
        try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
        try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
        m = Math.pow(10, Math.max(r1, r2));
        return (arg1 * m + arg2 * m) / m;
    },
    subtract(arg2, arg1) {
        var r1, r2, m, n;
        try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
        try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
        m = Math.pow(10, Math.max(r1, r2));
        //lastmodifybydeeka
        //动态控制精度长度
        n = (r1 >= r2) ? r1 : r2;
        return ((arg2 * m - arg1 * m) / m).toFixed(n);
    },
    multiply(arg1, arg2) {
        var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
        try { m += s1.split(".")[1].length } catch (e) { }
        try { m += s2.split(".")[1].length } catch (e) { }
        return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
    },
    divide(arg1, arg2) {
        var t1 = 0, t2 = 0, r1, r2;
        try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
        try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
        r1 = Number(arg1.toString().replace(".", ""))
        r2 = Number(arg2.toString().replace(".", ""))
        return (r1 / r2) * Math.pow(10, t2 - t1);

    }
};

function comp(_func, args) {
    let t = $math.chain($math.bignumber(args[0]));
    for (let i = 1; i < args.length; i++) {
        t = t[_func]($math.bignumber(args[i]||0));
    }
    // 防止超过6位使用科学计数法
    return parseFloat(t.done());
}






// let $math = require('mathjs');
// export const math = {
//     add() {
//         return comp('add', arguments);
//     },
//     subtract() {
//         return comp('subtract', arguments);
//     },
//     multiply() {
//         return comp('multiply', arguments);
//     },
//     divide() {
//         return comp('divide', arguments);
//     },
// };
//
// function comp(_func, args) {
//     let t = $math.chain($math.bignumber(args[0]));
//     for (let i = 1; i < args.length; i++) {
//         t = t[_func]($math.bignumber(args[i]||0));
//     }
//     // 防止超过6位使用科学计数法
//     return parseFloat(t.done());
// }


